#pragma once

// ....................................................................................................................
// Trieda IList
// ....................................................................................................................
class IList {
public:
	PVOID *Items; // Pole zaznamov
	INT32 Capacity; // Aktualna kapacita
	INT32 Count; // Aktualny pocet
public:
	IList(void); // Konstruktor
	~IList(void); // Destruktor
public:
	void __fastcall Clear(void); // Uvolnenie objektu z pamate
	void __fastcall Allocate(INT32 pCapacity, bool pCopy = false); // Alokacia pamate podla potreby
	void __fastcall Assign(IList *pValue); // Skopirovanie obsahu objektu
public:
	INT32 __fastcall Add(PVOID pValue); // Zaradenie hodnoty na koniec zoznamu
	INT32 __fastcall Insert(INT32 pIndex, PVOID pValue); // Vlozenie hodnoty do zoznamu na zadanu poziciu
	void __fastcall Delete(INT32 pIndex); // Vymazanie zaznamu
	void __fastcall Sort(INT32(__cdecl *pCompareFnc)(CONST_PVOID, CONST_PVOID), INT32 pStart = 0, INT32 pCount = -1); // Triedenie zoznamu
};
// ....................................................................................................................
